package com.xbongbong.pro.message.service;/*/*/

import com.xbongbong.message.domain.entity.PushEntity;
import com.xbongbong.message.domain.entity.PushLinkEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.message.pojo.MessagePojo;
import com.xbongbong.pro.message.pojo.dto.MessageListDTO;
import com.xbongbong.pro.message.pojo.dto.MessageGroupDTO;
import com.xbongbong.pro.message.pojo.dto.MessageRemindListDTO;
import com.xbongbong.pro.message.pojo.dto.MessageSearchFilterDTO;
import com.xbongbong.pro.message.pojo.vo.MessageGroupVO;
import com.xbongbong.pro.message.pojo.vo.MessageSearchFilterVO;
import com.xbongbong.pro.message.pojo.vo.MessageVO;

import java.util.List;

/**
 * Description: 消息列表相关
 * @author 李杰
 * @date 2019/1/6 1:16
 * @version v1.0
 * @since v1.0
 */
public interface MessageListService {

    /**
     * Description: 获取消息分组list
     * @param messageGroupDTO
     * @return MessageGroupVO
     * @throws XbbException 数据库操作异常
     */
    MessageGroupVO groupList(MessageGroupDTO messageGroupDTO) throws XbbException;

    /**
     * Description: 获取具体消息list
     * @param messageListDTO
     * @return MessageVO
     * @throws XbbException 数据库操作异常
     */
    MessageVO list(MessageListDTO messageListDTO) throws XbbException;

    /**
     * Description: 获取具体消息筛选项
     * @param messageSearchFilterDTO
     * @return MessageSearchFilterVO
     * @throws XbbException 参数异常
     */
    MessageSearchFilterVO searchFilter(MessageSearchFilterDTO messageSearchFilterDTO) throws XbbException;

    /**
     * Description: 移动端首页 消息列表
     * @param messageListDTO messageListDTO
     * @return MessageVO
     * @throws XbbException  XbbException
     */
    MessageVO indexList(MessageListDTO messageListDTO) throws XbbException;

    /**
     * 首页看板：获取未读跟进提醒列表
     * @param messageRemindListDTO
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-03-26 17:02
     * @since v1.0
     * @version v1.0
     */
    MessageVO indexRemindList(MessageRemindListDTO messageRemindListDTO) throws XbbException;

    /**
     * 首页看板：获取销售简报
     * @param corpid 公司id
     * @param userId 用户id
     * @return MessagePojo
     *
     * @author hongxiao
     * @date: 2019-03-26 14:56
     * @since v1.0
     * @version v1.0
     */
    PushEntity indexSalesReport(String corpid, String userId);

    /**
     * 根据推送信息关联表获取推送信息表并封装信息
     * @param pushLinkList 消息关联列表
     * @param refId        对象Id
     * @param isRemind     是否为跟进提醒消息：0 普通消息；1 跟进提醒
     * @return 消息队列
     */
    List<PushEntity> formatPushList(List<PushLinkEntity> pushLinkList, Integer refId, String corpid, Integer isRemind) throws XbbException;
}
